package org.xx.armory.bindings;

import static org.xx.armory.commons.Validators.notBlank;

/**
 * 绑定后的参数。
 *
 * @author Haart
 */
public final class BoundParam {
    private final String name;
    private final Object value;

    /**
     * 构造绑定后的参数。
     *
     * @param name
     *         参数名。
     * @param value
     *         参数值。
     * @throws NullPointerException
     *         如果参数{@code name}是{@code null}。
     * @throws IllegalArgumentException
     *         如果参数{@code name}只包含空白字符。
     */
    public BoundParam(
            final String name,
            final Object value
    ) {
        this.name = notBlank(name, "name").trim();
        this.value = value;
    }

    /**
     * 获取参数名。
     *
     * @return 参数名。
     */
    public final String getName() {
        return name;
    }

    /**
     * 获取参数值。
     *
     * @return 参数值。
     */
    public final Object getValue() {
        return value;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public final String toString() {
        return "@" + this.name + ":=" + this.value;
    }
}
